package main

import (
	"fmt"
	"reflect"
)

type A struct {
	ID int
}
type B struct {
	A
	ID string
}

func mainSlog() {

	//b := B{ID: 1}
	b := B{ID: "1"}
	fmt.Println(b)
	fmt.Println(b.ID)
	//fmt.Println(reflect.TypeOf(&(b.id)))
	fmt.Println(reflect.TypeOf(&(b)))

	b.x()
	fmt.Println(b)
	b.y()
	fmt.Println(b)
}

// 简单的说，以结构体类型作为接收者，其修改只在方法内部生效
func (receiver A) x() {
	receiver.ID = 123
}

// 以指针作为接收者，修改永远生效
func (receiver *A) y() {
	receiver.ID = 456
}
